package stdp_rules;

import java.util.List;

import utils.math_utils.RandStream;

import components.Synapse;

public abstract class STDP_Rule {
	
	protected RandStream randGen;
	private final double lRate;
	private final double tConstP;
	private final double tConstD;

	public STDP_Rule(double tConstP, double tConstD, double lRate) {
		this.lRate = lRate;
		this.tConstP = tConstP;
		this.tConstD = tConstD;
	}
	
	public abstract void applySTDPRule(Synapse s, double tPre, double tPost);

	public abstract void applySTDPRule(List<Synapse> syns, double spkTime,
			boolean in);
	
	public double getTConstP(){
		return tConstP;
	}
	
	public double getTConstD(){
		return tConstD;
	}

	public double getLRate() {
		return lRate;
	}
	
}
